There are many cases where a procedure from data input to operation result output is defined by multi-stage logics (logical operations). The multi-stage logical operation is described from operation of an input stage to operation of an output stage at a coding step with lapse of time from inputting to outputting of data or information. In addition, typically, the multi-stage logical operation is executed according to the description with lapse of time. An example of the multi-stage logical operation is one implemented as a logic circuit in an LSI and the like. Most of the logic circuit is constructed by a multi-stage combination of operation elements which are various kinds of gate circuits such as AND gates, OR gate and the like.
In the multi-stage logic circuit, a subsequent (rear stage) operation element performs an operation with an output of a plurality of previous stage operation elements as an input. A typical hardware for implementing the multi-stage logic circuit has hardware resources sufficient to construct a circuit in which the plurality of previous stage operation elements operates in parallel, for example, logical operation elements (gate elements, operation elements, etc.) and wirings. Accordingly, an operation order of the plurality of previous stage operation elements causes no problem. However, when a multi-stage logic circuit is implemented in a hardware having insufficient hardware resources or when a multi-stage logical operation is sequentially executed by a program, an operation order at a previous stage may affect an operation speed.
An example of sequential execution of the multi-stage logic circuit by a program is a simulation for verification of LSI functionality upon designing an LSI. As an LSI simulation method, there has been known an event-driven scheme and a cycle base scheme. The even-driven scheme is a scheme of tracing change of a signal value and its effect along a time axis. The cycle base scheme is a scheme of linearly evaluating the entire logics of a circuit one time per one clock cycle. Accordingly, all operation constructing multi-stage logics of the circuit is basically required to be evaluated at one clock cycle.
The cycle base scheme has to evaluate the entire logics every clock cycle. On this account, it may seem as if it is slower than the even-driven scheme at first glance. However, since the cycle base scheme does not require a management of insertion/deletion in/from an event list, it may be faster than the event-driven scheme in actual simulation. In particular, in case of simulation of recent pipeline-oriented LSI having a high activity rate (i.e., active in signal change), the cycle base scheme to evaluate the entire logics uniformly is faster than the even-driven scheme to trace a signal change one by one.
Speedup of simulation becomes more and more important with an increase in the LSI design scale. Japanese Patent Application Publication No. 2000-57203 discloses a method of transforming a simulation format of a cycle base scheme into a format to accelerate the simulation by eliminating a gate to reduce the number of literals or representing a large gate in a factorization format, with the meaning (operation order) of a given netlist unchanged. Japanese Patent Application Publication No. 2000-82091 discloses a method of performing a function simulation fast by extracting a function unit according to function circuit information, calculating execution frequencies of respective functions of function units, and generating a simulation model for a function circuit from the function circuit information by making use of the execution frequencies of respective functions.
With the increase of LSI design scale, there is a demand to further increase a simulation speed. The more time taken for simulation leads to prolongation of an LSI design schedule. On the other hand, if the amount of simulation is reduced in order to reduce the design schedule, it may cause a problem such that a defect reveals after completion of LSI manufacture. In addition, when a multi-stage logical operation is executed in a system such as a computer operating by a program, it is important to be able to shorten execution time.